package com.beiji.lib.pen.model

import com.google.gson.GsonBuilder
import com.google.gson.JsonSyntaxException
import java.io.Serializable

/**
 * 笔画，一个PenStroke就是一个笔画，主要用于本地存储笔迹，与笔迹的传输
 * Created by X on 2018/6/15.
 */
@Suppress("unused")
class PenStroke : Serializable {

    companion object {

        const val ACTION_STROKE = 0
        const val ACTION_ERASER = 1
        @Deprecated("已废弃")
        const val ACTION_AUDIO = 2
        const val ACTION_MARK = 3

        fun fromJson(json: String): PenStroke? {
            var stroke: PenStroke? = null
            try {
                stroke = GsonBuilder().create().fromJson<PenStroke>(json, PenStroke::class.java)
            } catch (e: JsonSyntaxException) {
                e.printStackTrace()
            }
            return stroke
        }
    }

    /**
     * id
     * 录音文件id，笔迹数据该字段为空
     */
    var id: String = ""

    /**
     *  操作类型
     *  0：正常笔迹
     *  1：擦除
     *  2：录音记录
     *  3：马克笔
     */
    var action: Int = 0

    /**
     *
     * 颜色，颜色值，可以直接存储颜色，或者存储一个调色盘上的色号
     */
    var color: Int = 0

    /**
     * 这一个笔画的时间戳，以落笔为准，单位为毫秒
     * 如果是录音数据，该字段表示录音的开始时间
     */
    var time = 0L

    /**
     * 笔迹的分页号
     */
    var page = 0

    var bookId = 6

    var list: MutableList<PenDot> = mutableListOf()

    fun addDot(dot: PenDot) {
        list.add(dot)
    }

    override fun toString(): String {
        return GsonBuilder().create().toJson(this)
    }
}